package com.blog.controller;

import com.blog.annotation.RequiredLog;
import com.blog.entity.Product;
import com.blog.mapper.ProductMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.io.File;
import java.util.Date;
import java.util.List;

/**
 * 定义商品模块数据的请求响应逻辑处理对象
 */
@RestController
public  class ProductController {

    @Autowired
    private ProductMapper productMapper;

    /**处理前端系统首页商品数据的获取请求*/
    @GetMapping("/product/list/index")
    public List<Product> selectIndex(){
        return productMapper.selectIndex();
    }

    /**
     * 基于id查询商品，并更新浏览量
     * @param id
     */
    @RequiredLog(operation = "浏览具体商品")
    @GetMapping("/product/select/{id}")
    public Product selectById(@PathVariable("id") Integer id){
        productMapper.updateViewCount(id);
        return productMapper.selectById(id);
    }
    /**基于商品分类id，查询商品信息*/
    @GetMapping("/product/selectByCid/{cid}")
    public List<Product> selectByCid(@PathVariable("cid") Integer cid){
        return productMapper.selectByCid(cid);
    }

    /**查询销量比较好的商品信息*/
    @GetMapping("/product/list/top")
    public List<Product> selectTop(){
        List<Product> products = productMapper.selectTop();
        for(Product p:products){
            if(p.getTitle().length()>5) {
                String title = p.getTitle().substring(0, 3) + "...";
                p.setTitle(title);
            }
        }
        return products;
    }

    /**基于关键字搜索商品数据*/
    @GetMapping("/product/selectByWd/{wd}")
    public List<Product> selectByWd(@PathVariable("wd") String wd){
        return productMapper.selectByWd(wd);
    }

    //==================================

    /**处理后端系统商品列表数据的获取请求*/
    @GetMapping("/product/list/admin")
    public List<Product> selectAdmin(){
        return productMapper.selectAdmin();
    }
    /**
     * 添加商品信息
     * @RequestBody 注解描述方法参数时，表示这个参数中属性的值，
     * 来自客户端提交的一个json格式的字符串
     * @param product
     */
    @PostMapping("/product/insert")
    //@RequestMapping(value="/product/insert",method = RequestMethod.POST)
    public void insert(@RequestBody  Product product){
        product.setCreated(new Date());
        productMapper.insert(product);
    }

    /**
     * 基于id删除商品信息
     * @param id
     */
    @DeleteMapping("/product/delete/{id}")
    public void deleteById(@PathVariable("id") Integer id){
        String url= productMapper.selectUrlById(id);
        new File("d:/file",url).delete();
        productMapper.deleteById(id);
    }


}
